<?php

namespace app\common\model\Order;

use think\Model;

// 引入软删除的模型
use traits\model\SoftDelete;

class Order extends Model
{
  // 在模型内使用软删除
  use SoftDelete;

  // 表名
  protected $name = 'order';

  // 自动写入时间戳字段
  protected $autoWriteTimestamp = 'int';

  // 定义时间戳字段名
  protected $createTime = 'createtime';
  protected $updateTime = false;
  protected $deleteTime = 'deletetime';

  // 追加属性
  protected $append = [
    'status_text',
    'create_time_text',
    'return_shipped'
  ];

  // 订单状态数据
  public function statuslist()
  {
    return [
      '0' => __('未支付'),
      '1' => __('已支付'),
      '2' => __('已发货'),
      '3' => __('已收货'),
      '4' => __('已完成'),
      '-1' => __('仅退款'),
      '-2' => __('退款退货'),
      '-3' => __('售后中'),
      '-4' => __('退货成功'),
      '-5' => __('退货失败')
    ];
  }

  // 订单状态的获取器
  public function getStatusTextAttr($value, $data)
  {
    $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
    $list = $this->statuslist();
    return isset($list[$value]) ? $list[$value] : '';
  }

  // 创建时间
  public function getCreatetimeTextAttr($value, $data)
  {
    $createtime = isset($data['createtime']) ? $data['createtime'] : '';

    if (empty($createtime)) {
      return '';
    }

    return date('Y-m-d H:i:s', $createtime);
  }

  // 关联物流
  public function express()
  {
    return $this->belongsTo('app\common\model\Express', 'expressid', 'id', [], 'LEFT')->setEagerlyType(0);
  }

  // 关联用户
  public function business()
  {
    return $this->belongsTo('app\common\model\Business\Business', 'busid', 'id', [], 'LEFT')->setEagerlyType(0);
  }

  // 关联用户收货地址
  public function address()
  {
    return $this->belongsTo('app\common\model\Business\Address', 'businessaddrid', 'id', [], 'LEFT')->setEagerlyType(0);
  }

  // 销售员
  public function sale()
  {
    return $this->belongsTo('app\common\model\Admin', 'adminid', 'id', [], 'LEFT')->setEagerlyType(0);
  }

  // 审核员
  public function review()
  {
    return $this->belongsTo('app\common\model\Admin', 'checkmanid', 'id', [], 'LEFT')->setEagerlyType(0);
  }

  // 发货员
  public function dispatched()
  {
    return $this->belongsTo('app\common\model\Admin', 'shipmanid', 'id', [], 'LEFT')->setEagerlyType(0);
  }

  // 关联查询订单商品
  public function orderProduct()
  {
    return $this->belongsTo('app\common\model\Product\order\Product', 'orderid', 'id', [], 'LEFT')->setEagerlyType(0);
  }

  public function getReturnShippedAttr($value, $data)
  {
    $ordercode = $data['code'];

    $res = model('Depot.Back.Back')->where(['ordercode' => $ordercode])->find();

    if($res){
      return true;
    } else {
      return false;
    }
  }
}
